<?php
namespace Service;

use think\facade\Config;
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;

/**
 * 上传类
 */
class UploadService
{
    public static function upload($file, $dirname = '')
    {
        $bucket    = Config::get('upload.qiniu.bucket');  /** 存储空间名称 */
        $domain    = Config::get('upload.qiniu.domain');  /** 存储空间对应的域名 */
        $accessKey = Config::get('upload.qiniu.accessKey');  /** 用于签名的公钥 AK */
        $secretKey = Config::get('upload.qiniu.secretKey');  /** 用于签名的私钥 SK */

        if($file){
            $tmpName   = $file->getRealPath();  /** 临时文件路径 */
            $auth      = new Auth($accessKey, $secretKey);  /** 初始化鉴权对象 */
            $token     = $auth->uploadToken($bucket);  /** 生成上传Token */
            $uploadMgr = new UploadManager();  /** 上传管理类 构建UplaodManager对象 */
             
            $ext  = $file->getOriginalExtension();  /** 文件后缀名 */

            if($dirname != '') $dirname .= '/';  /** 目录名 */
            $path = $dirname . md5(microtime(true) . mt_rand(1, 1e9)) . '.' . $ext;  /** 随机文件名 */
            $info = $uploadMgr->putFile($token, $path, $tmpName);

            return $domain . '/' . $info[0]['key'];  /** 上传到七牛云后的新名称 */
        }else{
            return false;
        }
    }
}